#ifndef SB_H
#define SB_H

#include <stdlib.h>
#include <stdio.h>
#include "ListaAresta.h"

class Solucao{
	protected:
		char *saida;
	public:
		static int tamanho;
		static int numClient;
		bool *solucao;
		static double *linkClient;//[numSteiner][numClientes]
		static double *fcLinkClient;//[numSteiner][numClientes]
		static double *auxLinkClient;//[numClientes]
		static bool isInitGulosa;
		static double *linkSteiner;//[numSteiner][numSteiner]
		static int *custoSteiner;//[numSteiner]
		static int *capacidadeSteiner;//[numSteiner]
		static int capacidadeSuperior;
		//Possui a lista dos custos cliente-steiner na ordem crescente
		static ListaAresta *custoClientSteiner;
		
		static double *indCusto;
		static int *indServidor;
		static int *indClient;
	
		double avaliacao;
		virtual void init() = 0;
		virtual double f() = 0;
		static void loadEntrada(char *fileName);
		static void printEntrada();
		static void initGulosa();
		char *print();
		void printResultado();
		virtual ~Solucao(){
			if(this->solucao != NULL){
				delete this->solucao;
			}
			if(this->saida != NULL){
				delete this->saida;
			}
		}
 
};

#endif
